#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
#include <SDL/SDL_ttf.h> // affichage des messages
#include <SDL/SDL_mixer.h> // include des sounds
#include "SDL/Rempmatt.h"
#include <string.h>
#include <time.h>



void Remptjoueur(int *tjoueur, int *t); // remplissage du tableau du joueur par des dominos
int testrandjoueur(int *tjoueur, int *nrep);
void Remptordi(int *tordi, int *t); // remplissage du tableau de l'ordinateur
int testrandordi (int *tordi, int *nrep2, int *t);
void Remptachat(int *tachat, int *t); // tableau d'achat des dominos
void copie(int *tcopie, int *t);

int main(int argc, char *argv[])
{
    Mix_Music *musique;
    const char* musiquePath = "1.mp3";
   if(Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, MIX_DEFAULT_CHANNELS, 1024) == -1) //Initialisation de l'API Mixer
    {
        printf("%s", Mix_GetError());
    }
    musique = Mix_LoadMUS(musiquePath); //Chargement de la musique
    Mix_PlayMusic(musique, -1);

    srand(time(NULL));



    SDL_Surface *image=NULL ,*ecran = NULL,*dominoj= NULL, *dominoo= NULL, *dominoa=NULL,*essai= NULL,*fond_base=NULL,*help=NULL,*menu = NULL;
    SDL_Rect position_dominoa,position_fond_base;
    SDL_Event event;
    int no=6,*pno,continuer = 1,tjoueur[100],tordi[100],t[100],tachat[14],tcopie[100],i,j,chainea,*pcontinuer,nj=6,*pnj;
    pcontinuer=&continuer;
    pnj=&nj;
    pno=&no;

    char mat[200][200],chainej[100],chaineo[100];
    SDL_Init(SDL_INIT_EVERYTHING);
    position_fond_base.x=0;
    position_fond_base.y=0;
    Rempmatt(mat,t);
    copie(tcopie,t);
    Remptjoueur(tjoueur,t);
    Remptordi(tordi,t);
    Remptachat(tachat,t);


    ecran= SDL_SetVideoMode(1030, 700, 0, SDL_HWSURFACE | SDL_DOUBLEBUF);




    menu=SDL_LoadBMP("menu.bmp");
    SDL_BlitSurface(menu, NULL, ecran, &position_fond_base);
    SDL_Flip(ecran);

    while (continuer)
    {

        SDL_WaitEvent(&event);
        switch(event.type)
        {


        case SDL_QUIT:
            continuer = 0;

            break;
        case SDL_KEYDOWN :
            switch(event.key.keysym.sym)
            {
            case  SDLK_1 :
                jouer(ecran,tjoueur,tcopie,t,mat,tordi,pcontinuer,pnj,tachat,pno);
                break;
            case  SDLK_3:
                   image=SDL_LoadBMP("help.bmp");
                     SDL_BlitSurface(image, NULL, ecran, NULL);
                     SDL_Flip(ecran);

                break;
            case  SDLK_4 :
                continuer=0;
                break;
            }

            break;
        }

    }
    SDL_FreeSurface(menu);
    SDL_FreeSurface(dominoo);
    SDL_FreeSurface(ecran);
    SDL_FreeSurface(dominoj);
    SDL_Quit();

    return EXIT_SUCCESS;
}






void Remptjoueur(int *tjoueur, int *t)
{
    int i,rep,*nrep,j;
    nrep=&rep;
    for (i=0; i<7; i++)
    {
        do
        {
            *nrep=(rand() % 27) + 1;
        }
        while (testrandjoueur(tjoueur,nrep)==1);
        tjoueur[i]=*nrep;
    }
    for (i=0; i<7; i++)
    {
        for (j=0; j<28; j++)
        {
            if (tjoueur[i]==j)
            {
                tjoueur[i]=t[j];
                t[j]=99;
                break;
            }
        }
    }
}

int testrandjoueur(int *tjoueur, int *nrep)
{
    int i,verif=0;
    for (i=0; i<7; i++)
    {
        if (tjoueur[i]==*nrep)
        {
            verif=1;
        }
    }
    return verif;
}


void Remptordi(int *tordi, int *t)
{
    int i,rep,*nrep,j;
    nrep=&rep;
    for (i=0; i<7; i++)
    {
        do
        {
            *nrep=(rand() % 27) + 1;
        }
        while (testrandordi(tordi,nrep,t)==1);
        tordi[i]=*nrep;
    }
    for (i=0; i<7; i++)
    {
        for (j=0; j<28; j++)
        {
            if (tordi[i]==j)
            {
                tordi[i]=t[j];
                t[j]=99;
                break;
            }
        }
    }
}

int testrandordi (int *tordi, int *nrep, int *t)
{
    int i, verif=0;
    for (i=0; i<7; i++)
    {
        if (tordi[i]==*nrep || t[*nrep]==99)
        {
            verif=1;
        }
    }
    return verif;
}



void Remptachat(int *tachat, int *t)
{
    int i,n=-1;
    for (i=0; i<28; i++)
    {
        if (t[i]!=99)
        {
            n++;
            tachat[n]=t[i];
        }
    }
}
void copie(int *tcopie, int *t)
{
    int i;
    for (i=0; i<=55; i++)
    {
        tcopie[i]=t[i];
    }
}





